Available in a git repository branch.
Branch: anarcat/dev/syslog_utf8
Author: anarcat

this feature made it so syslog doesn't work anymore if the site being logged has non-ASCII characters it in.

Specifically, my wiki was named "CⒶTS", and nothing was showing up in syslog. When I changed that to "C@TS", it worked again.

My guess is this sits somewhere here:

        return eval {
            Sys::Syslog::syslog($type, "[$config{wikiname}] %s", join(" ", @_));
        };

Yet I am not sure how to fix that kind of problem in Perl... --anarcat

If I remove the "eval" above, I get:

Error: Wide character in syswrite at /usr/lib/perl/5.14/Sys/Syslog.pm line 485.

I have improved a little the error handling in log_message() so that we see something when syslog fails, see the branch documented above. I can also confirm that reverting syslog should show wiki name fixes the bug. Finally, I have a unit test that reproduces the problem in git, and a working patch for the bug, again in git.

One last note: I noticed that this problem also happens elsewhere in ikiwiki. For example, the notifyemail plugin will silently fail to send notifications if the pages contain unicode. The ?notifychanges plugin I am working on (in option to send only the diff in notifyemail) seems to be working around the issue so far, but there's no telling which similar problem are out there.

I'd merge it. --smcv

I've merged it, but I don't feel it fixes this bug. --Joey

(I removed the patch tag to take it off the patches list.)

What else is needed? Systematic classification of outputs into those that do and don't cope with Unicode? --smcv